<?php ################################################################################ ################################################################################ // PHPSlideShow v0.6 written by Greg Lawler // from http://www.zinkwazi.com/pages.php?page_name=scripts // v0.6.1 july 2002 - fixed special character bug. // v0.6 july 2002 - added lots of formatting options and a security patch // v0.5.1 march 2002 - minor bug fixes, reg exp fix... // v0.5 march 2002 - osx path fix, page headings for multi dir, cleaner... // v0.4 july 10 2001 // v0.3.5 july 5 2001 // v0.3.4 april 19 2001 // v0.3.3 january 9 2001 // v0.3.1 september 29 2000 - added support for image buttons // v0.3 september 12 2000 - added support for comments // v0.2 august 28 2000 // // Feel free to use/modify this little script // // IMPORTANT NOTE.... // if you want to send me a token of appreciation, starbucks coffee coupons // are gladly accepted from http://www.starbucks.com ;) // my address is: // attention: greg lawler // 801 alston road, santa barbara, ca 93108 usa // otherwise it's free. // // this script comes with no implied warranty. // // enjoy :) // greg ############################# Quick Start Installation ######################### // put this file in a directory that contains your images // the slideshow should now work... ############################# Customized Installation ######################### // Q: how do i add image comments/descriptions to the slideshow? // A: make a file (e.g. pics.txt) that contains the image names and descriptions // place each image name and description on a new line separated by a semi colon. // an easy way to do this is type // ls *.jpg > pics.txt in linux or // dir *.jpg > pics.txt in dos - you will need edit this with notepad/vi to clean // out any extra stuff that dir puts in there and to add the semi colon and // description. // the slideshow should now work including comments... // // Q: how do i give each directory of images it's own page heading? // A: place a file called heading.txt in each directory. place the page heading // on the first line of this file. // // Q: how do i use one slideshow for multiple different directories of images? // A: all you need to do to enable this is to call the script and pass it the // directory path. // NOTE: for security, you can only access directories within the same level as // the phpslideshow.php script... // eg http://your_url/phpslideshow.php?directory=dog_pics // eg http://your_url/phpslideshow.php?directory=cat_pics // eg http://your_url/phpslideshow.php?directory=extra/cat_pics // these three examples will run phpslideshow but each one will load a different // set of images and descriptions located in the directories shown // // Q: how do i use phpslideshow.php in my existing web page or html template? // A: change the $standalone variable from true to false. // what this does is removes the html page headers and footers and only prints // out the phpslideshow table... // to use this in an existing php page, use the following line: // include("phpslideshow.php"); // don't forget that this is php code so it needs to be inside the <? php tags. // also, the // at the beginning of the line need to e removed. // // EXAMPLE pics.txt file // // greg.jpg;Me // dog.png;My dog John // cat; // tux.jpg;My friend Tux // // NO BLANK LINES either! // as you can see, not all pics need a description but the ";" is a MUST! // point your browser at the script and voilla! ##### CREDITS ##### // the following nice folks have contributed code snippets, bug fixes, ideas :) // patrick, nicolas, otto, wei-min lee, tom, jonathan, jason rust, hai phung // greg rundlett, laszlo (jabba), mike collard, justin, jadex, bunnyguy ################################################################################ ################################################################################ // file containing optional image descriptions $pic_info_file="pics.txt"; // name of file containing optional page headings $heading_info_file = "heading.txt"; // set this to true to display the image filename $show_image_name = "false"; // set to true to display navigation icons instead of text... $show_navigation_buttons = "false"; $back_button = "back.gif"; $next_button = "next.gif"; // automated slideshow options // set this to true to enable the auto slideshow feature $auto_slideshow = "false"; // $sec is number of seconds between slides... $sec = "2"; // some formatting options... $top_row_color = "#cccccc"; $image_row_color = "#ffffff"; $bottom_row_color = "#cccccc"; $page_background_color = "#ffffff"; $main_table_border_color = "#000000"; $img_border_color = "#000000"; $main_table_width = "60%"; $your_home_url = "http://www.memorialmusolino.com"; $home_link = "HOME"; $next_alt = "Avanti"; $back_alt = "Indietro"; // set standalone to false if you are using this script in an existing php doc // e.g. insert the following line in the page where // you want phpslideshow to appear // include("phpslideshow.php"); // dont forget to remove the comment slashes... $standalone = "true"; ################################################################################ // grab the variables we want set for newer php version compatability // the @ supress the error messages if your php.ini error level is too high @$currentPic = $GLOBALS['HTTP_GET_VARS']['currentPic']; @$directory = $GLOBALS['HTTP_GET_VARS']['directory']; // check for platform dependent path info... (for windows and mac OSX) $path = empty($HTTP_SERVER_VARS['PATH_INFO'])? $HTTP_SERVER_VARS['PHP_SELF']:$HTTP_SERVER_VARS['PATH_INFO']; // a little security - check that the user did not change the path... // the path may not contain .. or : (as in c:) or start with / (root dir) if (preg_match(':(\.\.|^/|\:):', $directory)) { print "<b>ERROR:</b> Your request contains an invalid path.<br>"; print "For security purposes, you can only access directories "; print "within this one.<br>"; print "Your dir path may not contain .. or : or start with a /<br>"; print "<br><a href=\"$path\">Try again</a>"; exit; } // set directory if (empty($directory)) $directory = "."; // if there is no $heading_info_file (see format above) set page heading here if ( !file_exists("$directory/$heading_info_file")) { $header = "Fotogallery 3� Memorial Paolo Musolino"; $browser_title = "$header"; } else { $heading_info = file("$directory/$heading_info_file"); $header = htmlentities($heading_info[0]); } // image / text buttons if ($show_navigation_buttons == "true") { $back_src = "<img src=\"$back_button\" alt=\"$back_alt\" border=\"0\">"; $next_src = "<img src=\"$next_button\" alt=\"$next_alt\" border=\"0\">"; } else { $back_src = "<b>$back_alt</b>"; $next_src = "<b>$next_alt</b>"; } if ( !file_exists("$directory/$pic_info_file")) { $dh = opendir( "$directory" ); while( $file = readdir( $dh ) ) { // look for these file types.... if (eregi("(jpg|jpeg|gif|png)$",$file)) { $pic_info[] = $file; sort( $pic_info ); } } } else $pic_info=file("$directory/$pic_info_file"); // begin messing with the array $number_pics = count ($pic_info); if (empty($currentPic)) $currentPic = 0; if (($currentPic > $number_pics)||($currentPic == $number_pics)) $currentPic = '0'; $item = explode (";", $pic_info[$currentPic]); $last = $number_pics - 1; $next = $currentPic + 1; if ($currentPic > 0 ) $back = $currentPic - 1; else $currentPic = "0"; // print the description if it exists $blank = empty($item[1])?' ':htmlentities($item[1]); $show_name = ($show_image_name=="false")?' ':htmlentities($item[0]); if ($currentPic > 0 ) $nav=$back; else $nav=$last; // meta refresh stuff for auto slideshow... if ($auto_slideshow == "true") { $meta_refresh = "<meta http-equiv=\"refresh\" content=\""; $meta_refresh .= "$sec;url=$path?directory=$directory¤tPic=$next\">"; } else $meta_refresh = "\n"; ################################################################################ // top of html page stuff // print the page header if in standalone mode if ($standalone == "true") { print <<< HERE <!-- PHPSlideshow v0.5 by Greg Lawler --> <!-- http://www.zinkwazi.com/pages.php?page_name=scripts --> <html> <head> $meta_refresh <title>$header</title> <style type="text/css"> body { font-family: verdana; font-size: 14px; } a { font-family: verdana; font-size: 14px; text-decoration: none } </style> </head> <body bgcolor="$page_background_color"> HERE; } // draw the main table in html print <<< HERE <center> <table width="$main_table_width" align="center" valign="center" border="0" cellspacing="0" cellpadding="2" bgcolor="$main_table_border_color"> <tr> <td> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr bgcolor="$top_row_color"> <td align="left" nowrap width="50%"> <b>$header</b></td> <td width="50%" align="right" valign="center"> <a href="$path?directory=$directory¤tPic=$nav">$back_src</a> [ $next of $number_pics ] <a href="$path?directory=$directory¤tPic=$next">$next_src</a> </td> </tr> </table> <table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td bgcolor="$image_row_color" align="center" valign="center"> <a href="$path?directory=$directory¤tPic=$next"> <img src="$directory/$item[0]" alt="image" border="2" style="border-color: $img_border_color"> </a> </td> <td bgcolor="$image_row_color" align="center" valign="center" width="80%">$blank<br>$show_name</td> </tr> <tr bgcolor="$bottom_row_color"> <td> </td> <td align="right"> <b><a href="$your_home_url">$home_link</a></b></td> </tr> </table> </td> </tr> </table> </center> HERE; // print the page footer if in standalone mode if ($standalone == "true") { print <<< HERE </body> </html> HERE; } ?>